package top.yxqz.number4.service.impl;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import top.yxqz.number4.entity.TSsmEmp;
import top.yxqz.number4.mapper.TSsmEmpMapper;
import top.yxqz.number4.service.TSsmEmpService;
import org.springframework.stereotype.Service;

import java.util.List;


/**
 * (TSsmEmp)表服务实现类
 */
@Service
public class TSsmEmpServiceImpl extends ServiceImpl<TSsmEmpMapper, TSsmEmp> implements TSsmEmpService {
    @Autowired
    private TSsmEmpMapper mapper;


    @Autowired
    private RedisTemplate redisTemplate;


    /**
     * 分页查询
     */
    public IPage fenye() {

        IPage page = new Page<>(1, 10); //默认1也 10条数据
        IPage selectedPage = mapper.selectPage(page, null);
        return selectedPage;
    }


    /**
     * 实现查询所有员工
     *
     * @return
     */
    @Override
    public List<TSsmEmp> getAllEmps() {
        return mapper.selectList(null);
    }

    /**
     * 实现分页查询所有员工（条件查询）
     *
     * @param pageNumber 页码数
     * @param sizeNumber 条数
     * @param targetEmp  条件
     */
    @Override
    public IPage<TSsmEmp> getPage(Integer pageNumber, Integer sizeNumber, TSsmEmp targetEmp) {

        //        封装分页对象 --多态
        IPage<TSsmEmp> iPage = new Page<>(pageNumber, sizeNumber);


//        分装条件对象 判断传入的条件之是否为空 并且对实体类字段进行匹配
        LambdaQueryWrapper<TSsmEmp> wrapper = new LambdaQueryWrapper<>();
        wrapper.like(Strings.isNotEmpty(targetEmp.getEmpName()), TSsmEmp::getEmpName, targetEmp.getEmpName());
        wrapper.like(Strings.isNotEmpty(targetEmp.getEmail()), TSsmEmp::getEmail, targetEmp.getEmail());
//        wrapper.like(targetEmp.getAge() != 0, TSsmEmp::getAge, targetEmp.getAge());


        IPage<TSsmEmp> tSsmEmpIPage = mapper.selectPage(iPage, wrapper);

        List<TSsmEmp> records = tSsmEmpIPage.getRecords();
        String empName = records.get(0).getEmpName();
//        将该数据存入到redis中
        redisTemplate.opsForValue().set("empName", empName);
//        redisTemplate.opsForList().set("empslist", 2, records);

        return tSsmEmpIPage;
    }
}

